package com.df.tv.launcher.util;

import android.os.AsyncTask;
import android.util.Log;

import com.df.tv.launcher.entity.FileInfo;
import com.df.tv.launcher.util.SystemInfo.NoSystemInfoException;
import com.df.tv.launcher.util.SystemInfo.SysInfo;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.telecom.tv189.comlib.net.XHttpClient;
import com.telecom.tv189.comlib.net.json.entity.BaseEntity;

/**
 * 读取分域下发信息的异步任务<br>
 * 主要使用了tmsGetFile接口<br>
 * AsyncTask.execute(Param... params)的第一个参数是文件类型,一个整型数据
 * 
 * @author yrh
 *
 */
public class TmsGetFileTask extends AsyncTask<String, Void, BaseEntity<FileInfo>> {
    private onTmsGetFile onTmsGetFile;

    /**
     * 读取分域下发信息的异步任务<br>
     * 主要使用了tmsGetFile接口来读取不同的数据,需要传入参数文件类型(int类型)
     * 
     * @param onTmsGetFile
     *            回调接口
     */
    public TmsGetFileTask(onTmsGetFile onTmsGetFile) {
        this.onTmsGetFile = onTmsGetFile;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected BaseEntity<FileInfo> doInBackground(String... params) {
        try {
            SysInfo sysInfo = SystemInfo.read();
            String tmssn = sysInfo.getSn();//SN号
            int tmsFileType = Integer.parseInt(params[0]);//文件类型(5-推荐信息,6-导航栏信息,7-滚动信息)
            RequestParams requestParams = XHttpParamsUtil.getInstance().tmsGetFile(tmssn, tmsFileType);
            ResponseInfo<String> responseInfo = XHttpClient.getInstance().getSync(requestParams, null);
            Log.i("Test", "TmsGetFile Task Json: " + responseInfo.result);
            return JsonParseUtil.getInstance().tmsGetFile(responseInfo.result);
        } catch (NoSystemInfoException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (HttpException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(BaseEntity<FileInfo> result) {
        super.onPostExecute(result);
        onTmsGetFile.onTaskToResult(result);
    }

    /**
     * 回调方法
     * 
     * @author
     *
     */
    public interface onTmsGetFile {
        public void onTaskToResult(BaseEntity<FileInfo> baseEntity);
    }
}
